package ihm.models;

import ihm.models.events.CharacterChangedEvent;
import ihm.models.events.EquipmentChangedEvent;
import ihm.models.events.ItemTypeChangedEvent;
import ihm.models.events.LanguageChangedEvent;
import ihm.models.events.QueryChangedEvent;
import ihm.models.events.StatChangedEvent;

import java.util.EventListener;

/**
 * This interface provides mechanism for a class to be aware of the different
 * program events after being registered to the model via <i>addATKlistener</i>
 * method.
 * @author Baptiste Legrand & Benjamin Orman
 * @version 1.0
 */
public interface ATKlistener extends EventListener {
  /**
   * Event when the character's equipment is modify
   * @param event - The EquipmentChangedEvent containing the new Equipment.
   */
  public void EquipmentChanged(EquipmentChangedEvent event);
  /**
   * Event when the program language changed
   * @param event - The LanguageChangedEvent containing the new language.
   */
  public void LanguageChanged(LanguageChangedEvent event);
  /**
   * Event when the item selected in the tree changed.
   * @param event - The ItemTypeChangedEvent containing the new Item.
   */
  public void ItemTypeChanged(ItemTypeChangedEvent event);
  /**
   * Event when the Query contains in the model is modify.
   * @param event - The QueryChangedEvent containing the new Query.
   */
  public void QueryChanged(QueryChangedEvent event);
  /**
   * Event when the Character's statistics are modify.
   * @param event - The StatChangedEvent containing the new Statistics.
   */
  public void StatChanged(StatChangedEvent event);  
  /**
   * Event when the Character changed.
   * @param event - The CharacterChangedEvent containing the new Character.
   */
  public void CharacterChanged(CharacterChangedEvent event);
}
